1. Field of the Invention
The invention relates to graphical user interfaces.
2. Description of the Related Art
Complex systems are being built by loosely coupling distributed hardware modules interconnected over various connections. Application Programming Interfaces (APIs) which allow a controller to discover and control these distributed hardware modules are necessary. These API's are usually well understood and change slowly for given system functionality.
However, these hardware modules often require user interaction through some graphical user interface (GUI). Each hardware module may require unique control, since its function in the system may be vastly different than other hardware modules so that GUI control is particular to each hardware module and their variants. The GUI API's for these hardware modules tend to change rapidly, as new hardware module variants often have different capabilities and configurations. This results in either the new hardware modules foregoing some capabilities or the controller API changing frequently, with the resultant need to frequently update the controller.
Consider a hardware component that requires the user to navigate a USB flash drive and select files. API's will be needed to support: directory tree traversal, file type sorting, file selection, file moving, file deletion, etc. The controller would build the GUI interface and have to translate user events into remote procedure calls (RPC). It would then have to translate the RPC results to GUI control.
Alternatively the hardware modules may provide the same service, such as an encoded camera video, but may have very different GUI needs. For example, they may have advanced camera algorithms which can be enabled or disabled. They may have more selection in terms of white balance and exposure. Now the controller's software must be revised to accommodate each new hardware module variant.
The user simply wants to control the system and does not want to understand the underlying complexities due to the system's distributed architecture. The user will use his web-enabled device (tablet, phone, etc.) to connect to a central controller. The controller must present a seamless GUI control of the distributed system. The distributed modularity of the system must be hidden from the user.